package com.tools.developer.util;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.text.TextUtils;

/**
 * 日期工具类
 */
public class DateUtil {
	/**
	 * yyyy-MM-dd HH:mm:ss
	 */
	public static final String DATEFORMAT1 = "yyyy-MM-dd HH:mm:ss";
	/**
	 * yyyy-MM-dd
	 */
	public static final String DATEFORMAT2 = "yyyy-MM-dd";

	/**
	 * 
	 * @param pattern
	 *            yyyyMMdd/yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String getNowFormatDate(String pattern) {
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		return df.format(new Date());
	}

	/**
	 * 得到几天前的时间
	 * 
	 * @param d
	 * @param day
	 * @return
	 */
	public static Date getDateBefore(Date d, int day) {
		Calendar now = Calendar.getInstance();
		now.setTime(d);
		now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
		return now.getTime();
	}

	/**
	 * 转换字符串为Date值，字符串格式：HH:mm:ss
	 * 
	 * @param s
	 *            需要转换的字符串，字符串格式：HH:mm:ss
	 * @return Date值
	 */
	public static Date timeCodeToDate(String s) {
		try {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("HH:mm:ss");
			ParsePosition parseposition = new ParsePosition(0);
			Date date = simpledateformat.parse(s);
			return date;
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * 返回指定Date值的String值，格式：yyyy-MM-dd HH:mm:ss
	 * 
	 * @param date
	 *            需要转换的日期
	 * @return String值
	 */
	public static String dateToString(Date date) {
		try {
			SimpleDateFormat simpledateformat = new SimpleDateFormat(
					DATEFORMAT1);
			String s = simpledateformat.format(date);
			return s;
		} catch (Exception e) {
			return "";
		}
	}

	/**
	 * 求当前日期和指定字符串日期的相差天数
	 * 
	 * @param startDate
	 *            格式：yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static long getTodayIntevalDays(String startDate) {
		try {
			if (TextUtils.isEmpty(startDate)) {
				return 0;
			}
			// 当前时间
			Date currentDate = new Date();
			// 指定日期
			SimpleDateFormat myFormatter = new SimpleDateFormat(DATEFORMAT1);
			java.util.Date theDate = myFormatter.parse(startDate);

			// 两个时间之间的天数
			long days = (currentDate.getTime() - theDate.getTime())

			/ (24 * 60 * 60 * 1000);
			return days;
		} catch (Exception ee) {
			return 0;
		}
	}
}
